package com.econvent.conn;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.support.rowset.SqlRowSet;

import java.util.List;
import java.util.Map;

public interface JdbcOperations {
    /**
     * 执行对应的 SQL 语句
     *
     * @param sql 需要执行的SQL语句
     * **/
    void execute(String sql) ;

    /**
     * 针对只有一条记录的查询; 查询结果将会返回Map (字段名作为Key).
     *
     * @parma sql
     *
     * @return the result Map (one entry per column, with column name as key)
     * **/
    Map<String, Object> queryOne(String sql) ;

    /**
     * 针对多条结果记录的查询; 查询结果将会返回Map (字段名作为Key).
     *
     * @parma sql
     *
     * @return the result Map (one entry per column, with column name as key)
     * **/
    List<Map<String, Object>> queryList(String sql) throws DataAccessException;

    /**
     * 返回查询的List
     *
     * @parma sql
     *
     * @return the result list
     * **/
    <T> List<T> queryForList(String sql, Class<T> elementType) ;

    /**
     * 返回查询的  JDBC RowSet
     *
     * @parma sql
     *
     * @return the SqlRowSet
     * **/
    SqlRowSet queryForRowSet(String sql) ;

    /**
     * 执行相关的更新语句
     *
     * @parma sql
     *
     * @return the SqlRowSet
     * **/
    int update(String sql) ;

    /**
     * 批量执行相关的更新语句
     *
     * @parma sql
     *
     * @return the SqlRowSet
     * **/
    int[] batchUpdate(String... sql) ;

}
